IAxis.CyclicSwitch 方法
使用轴位置来控制重复触发数位输出的开关。当轴达到特定的位置,开关即开启或关闭,开关可透过轴向前或向后移动的方向来控制。
命名空间:IntervalZero.KINGSTAR.Base.Class组合: IntervalZero.KINGSTAR.Base.Class (于 IntervalZero.KINGSTAR.Base.dll) 版本:4.4.0.0
语法
void DigitalCamSwitch(
McOutput output,
double startPosition,
McCamSwitch cyclicSwitch,
McLengthType intervalType,
double interval,
McLengthType durationType,
double duration,
McSource valueSource
)
Sub DigitalCamSwitch(
output As McOutput,
startPosition As Double,
cyclicSwitch As McCamSwitch,
intervalType As McLengthType,
interval As Double,
durationType As McLengthType,
duration As Double,
valueSource As McSource
)
参数
output
型别:McOutput
选择对应轨道所控制的数位输出。
startPosition
型别:double
开关开启的位置。
cyclicSwitch
型别:McCamSwitch
控制开关动作。
- TrackNumber:值必须为零。
- FirstOnPosition:值必须为非负,为各周期开始位置相关的距离。
- LastOnPosition:值必须为正,且较 FirstOnPosition 为大,为各周期开始位置相关的距离。
- Duration:值必须为正。
intervalType
型别:McLengthType
Interval 类型。可使用 mcDistance 与 mcTime。
interval
型别:double
周期长度。依照所选的 IntervalType 而定,值必须为正。
durationType
型别:McLengthType
Duration 类型。可使用 mcDistance 与 mcCount。
duration
型别:double
周期重复的持续时间,依照所选的 DurationType 而定,值必须为正。
valueSource
型别:McSource
定义轴值的来源,例如位置:
- mcCommandedValue, mcSetValue – 同步设定值。建议使用此设定。
- mcActualValue – 同步实际值。此设定可能不稳定。
- mcSecondEncoderValue – 从第二编码器读取的实际值。
备注
- McCamSwitch 为供应商特定的结构,用于定义数位凸轮的开关。
- McOutput 为供应商特定的结构,用于连接至(实体)输出,若使的是您个人的伺服驱动器的数位输出 (DO),需在 ISubsystem.Start 前使用 ISubsystem.AxisOutput。
- 在 McCamSwitch 类别中,当 CamSwitchMode 选择为位置时不支援以下组合:
- IntervalType: mcTime;DurationType: mcDistance.
- IntervalType: mcTime;DurationType: mcCount.
使用案例:
以下案例虽来自于 RT/Win32 介面,但有助于理解周期开关的运作方式。
案例 1
循环开关在持续时间内完成其任务。
McOutput outputBit = {
FALSE, //Axis or IO module. FALSE = I/O.
0, //Index
0 //Offset
}
McCamSwitch cyclicSwitch = {
0, //TrackNumber
40, //FirstOnPosition
60, //LastOnPosition
1, //AxisDirection. 1 = Positive.
0, //CamSwitchMode. 0 = Position.
0 //Duration. It is not used in this case.
);
Command = SetAxisCyclicSwitch(
TargetAxis, //Index
outputBit, //Output
100, //StartPosition
cyclicSwitch, //CyclicSwitch
mcDistance, //IntervalType
100, //Interval
mcDistance, //DurationType
250, //Duration
mcSetValue //ValueSource
);
案例 2
循环开关在完成任务之前中止。
McOutput outputBit = {
FALSE, //Axis or IO module. FALSE = I/O.
0, //Index
0 //Offset
}
McCamSwitch cyclicSwitch = {
0, //TrackNumber
0, //FirstOnPosition
0, //LastOnPosition
1, //AxisDirection. 1 = Positive.
1, //CamSwitchMode. 1 = Time.
0.003 //Duration
);
Command = SetAxisCyclicSwitch(
TargetAxis, //Index
outputBit, //Output
100, //StartPosition
cyclicSwitch, //CyclicSwitch
mcTime, //IntervalType
0.005, //Interval
mcCount, //DurationType
3, //Duration
mcSetValue //ValueSource
);
参见